import pandas as pd
import numpy as np

# df = pd.read_excel("Pandas标签库\行星数据.xlsx", index_col= 0)

# # 使用 .head() 方法，使其仅输出前五行
# print(df.head())
# # print(df.iloc[0:5, :])


# # 7.2 聚合方法
# # 最大值函数 np.max( )
# print("# 最大值函数 np.max( )")
# print(df.max())
# # 最小值函数 np.min( )
# print("# 最小值函数 np.min( )")
# print(df.min())
# # 均值函数 np.mean( )
# print("# 均值函数 np.mean( )")
# print(df["发现时间"].mean())
# # 标准差函数 np.std()
# print("标准差函数 np.std()")
# print(df["行星质量"].std())
# # 求和函数 np.sum( )
# print("# 求和函数 np.sum( )")
# print(df["发现数量"].sum())


# # 7.3 描述方法
# print("# 7.3 描述方法")
# print(df.describe())


# 7.4 数据透视
df = pd.read_excel("Pandas标签库\泰坦尼克.xlsx", index_col= 0)
print(df.head())

# # （1）两个特征内的数据透视
# # 一个特征：性别
# print("\n一个特征：性别\n")
# print(df.pivot_table("是否生还", index= "性别"))
# # 两个特征：性别、船舱等级
# print("\n两个特征：性别、船舱等级\n")
# print(df.pivot_table("是否生还", index= "性别", columns= "船舱等级"))
# # 值得注意的是，pivot_table() 方法有一个很重要的参数：aggfunc，其默认值
# # 是'mean'，除此以外，所有的聚合函数 'max'、'min'、'sum'、'count' 均可使用。
# # 显然，对于这里的“是否生还”来说，'mean'就是最好的选择，其刚好为概率。

# （2）多个特征的数据透视
print("（2）多个特征的数据透视")
# 三个特征：性别、船舱等级、年龄
print("三个特征：性别、船舱等级、年龄")
age = pd.cut(df["年龄"], [0, 18, 999]) # 以 18 岁为分水岭
print(df.pivot_table("是否生还", index= ["性别", age], columns= "船舱等级", observed= False))
# 四个特征：性别、船舱等级、年龄、费用
print("四个特征：性别、船舱等级、年龄、费用")
fare = pd.qcut(df["费用"], 2)
print(df.pivot_table("是否生还", index= ["船舱等级", fare], columns= ["性别", age], observed= False))





